package com.tom.architect02.p4.day37.simple3;

import com.tom.architect02.p4.day35.simple2.BaseSubscriber;

/**
 * Added by Tom on 2024/01/26.
 */
public class UserInfoPresenter implements UserInfoContact.UserInfoPresenter {
    //P层 肯定会持有 V 和 Model。 p用来解耦。
    private UserInfoContact.UserInfoView mView;
    private UserInfoContact.UserInfoModel mModel;

    // view传递进来
    public UserInfoPresenter(/*UserInfoContact.UserInfoView view*/) {
//        this.mView = view;
        this.mModel = new UserInfoModel();
    }

    // 解绑 View 加了这个之后越来越复杂，代码写起来越来越多？怎么办？
    // 问题是: 1. 很多代码是公用反复的，attach detach 每个 Presenter 都要有;
    //        2. Activity -> View 的 attach detach 每个 View 层也要有;
    public void attach(UserInfoContact.UserInfoView view) {
        this.mView = view;
    }

    // 解绑view，避免
    public void detach() {
        this.mView = null;
    }


    @Override
    public void getUser(String token) {
        mView.onLoading();

        // 获取数据。
        mModel.getUsers(token).subscribe(new BaseSubscriber<UserInfo>() {
            @Override
            protected void onError(String errorCode, String errorMessage) {
                // 失败。
                if (mView != null)
                    mView.onError();
            }

            @Override
            public void onNext(UserInfo userInfo) {
                // 成功
                if (mView != null)
                    mView.onSucceed(userInfo);
            }
        });
    }

}
